草庐IT

c++ - QML Qt openUrlExternally

全部标签

c++ - Qt Creator - 代码正在运行,但我从 IDE 收到一条错误消息

一旦我运行我的代码(请注意,我只使用C,没有QT也没有C++),我从IDE中的应用程序输出中得到以下消息:Cannotobtainahandletotheinferior:Theparameterisincorrect.当我删除makefile和debug/release文件夹时,它正在运行,但一段时间后我仍然收到错误。虽然这不是什么大问题,代码运行并且一切正常,但是弹出此错误并且非常烦人。.pro文件的内容是:TEMPLATE=appCONFIG+=consoleCONFIG-=app_bundleCONFIG-=qtQMAKE_CC=gcc-std=c99SOURCES+=main

c++ - c/c++关于指针的问题(双指针)

自从我学习c和c++类(class)以来,我对c指针很好奇(我打算在我的示例中使用new关键字,即使我知道malloc是C的方式)。我总是记得我的老师总是强制我们使用指针,她永远不会对数组进行赋值,她向我们证明,当您使用指针而不是使用数组时,汇编语言中需要的命令更少。我想继续这种良好做法,但我似乎很难使用指针,特别是双指针。假设我想在不使用c++字符串数据类型的情况下创建一个词库,并且我有一个char类型的双指针。intmain(){stringfileName="file.txt";char**wordBank=null;intwordCount=countWords(fileNam

c++ - 混合 C 和 C++ 库

我在构建用C++编码的可执行文件时遇到了一个奇怪的问题,该可执行文件使用本身依赖于C库的C++库。我使用gcc编译了构成C库的C模块,使用g++编译了所有其他源模块。C和C++库都是静态库。当我在C++源代码中包含C库中的头文件时,我总是将它包装在extern"C"中:extern"C"{#include}现在奇怪的是链接时会出现“undefinedreference”错误,但这些会根据我列出库的顺序发生变化:如果我首先列出C库,则C++模块引用的该库中的所有符号都显示为“未定义”。如果我首先列出C++库,则C++模块引用的该库中的所有符号都显示为“未定义”。我本以为在g++命令行上出

c++ - 摆脱丑陋的 C 结构

我继承了一段(大)代码,它有一个错误跟踪机制,他们将一个bool变量传递给他们调用的所有方法,并且在执行的各个阶段出现错误时,该方法被停止并返回,有时是默认值值(value)。类似(之前):#includeintfun1(intpar1,bool&psuccess){if(par1==42)return43;psuccess=false;return-1;}intfuntoo(inta,bool&psuccess){intt=fun1(a,psuccess);if(!psuccess){return-1;}return42;}voidfunthree(intb,bool&psucces

c++ - sizeof 运算符在运行时发生变化?

这个问题在这里已经有了答案:Howsizeof(array)worksatruntime?(6个答案)关闭8年前。sizeof运算符是一个编译时运算符,但在下面的程序中它会在运行时发生变化。#includevoidfunc(inti){inta[i];printf("%d\n",sizeof(a));}main(){inti=0;while(i内存将在运行时分配。编译器如何计算没有结构填充的结构大小?

c++ - 动态内存分配会降低性能吗?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我浏览了videobyBjarneStroustrup他解释了为什么要避免链接列表。基本上,当使用指针动态分配内存时,缓存未命中的次数会增加,从而降低性能。但是,如果将同样的事情应用于树和图等非线性数据结构,同样的事情是否成立?因为,在树中,每个节点也有两个指针,指针的随机移动同样会导致缓存未命中。但是,树已被证明比线性数据结构表现更好。当然,树也可以使用数组来实现,但同样会消耗大量内存。我的问题是:动态

c++ - 如何使用 CMake 添加编译器参数?

我一直在使用ClionIDE并试图获得一个简单的GTK程序来使用它进行编译。我发现Clion使用CMake,所以问题出在这里而不是IDE本身。我能够直接从终端成功编译和运行程序,但使用CMake却没有成功。问题很简单:当我尝试编译时,编译器找不到位于/usr/include/gtk-3.0/gtk/gtk.h中的gtk.h。我发现命令编译器参数'pkg-config--libs--cflagsgtk+-3.0'以某种方式修复了这个问题,但我无法使用CMake添加这个参数。我试过:set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}`pkg-config--lib

c++ - 使用 CUDA-aware MPI 的要求

我想通过CUDA感知MPI在不同CUDA设备之间交换数据,如thisarticle中所述.据我了解,以下代码应该可以完成这项工作:#includeintmain(intargc,char*argv[]){intrank;float*ptr=NULL;constsize_telements=32;MPI_Statusstatus;MPI_Init(NULL,NULL);MPI_Comm_rank(MPI_COMM_WORLD,&rank);cudaMalloc((void**)&ptr,elements*sizeof(float));if(rank==0)MPI_Send(ptr,ele

c++ - 内存分配和字符数组

我还是不太明白,到底会发生什么情况:inti=0;for(i;isome_array会充当:some_array=malloc(24);在循环的开始和free(some_array)在循环结束时?或者那些变量会在栈中分配,函数结束后销毁? 最佳答案 some_array对于block是局部的,因此它在循环的每次迭代开始时创建,并在循环的每次迭代结束时再次销毁。对于一个简单的数组,“创建”和“销毁”意义不大。如果(在C++中)您将它替换为(例如)一个在创建和销毁时打印出某些内容的对象,您会看到这些副作用发生了。

c++ - 不同库中的相同符号和链接顺序

我有2个库:test.1和test.2。这两个库都包含一个全局extern"C"voidf();函数,具有不同的实现(只是一个用于测试的cout)。我做了以下测试:测试1动态链接:如果我在可执行文件的makefile中添加libtest.1.so然后libtest.2.so然后调用f();main,libtest.1.so->f()被调用。如果我更改makefile中的顺序,将调用libtest.2.so->f()测试2静态链接:静态库完全一样测试3动态加载由于库是手动加载的,所以一切都按预期进行。我预计多个定义会出现错误,但这显然没有发生。此外,这并没有打破单一定义规则,因为情况不同